package com.shop2cn.iapi.grouponmgr.parameter;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;

/**
 * 拼团查询活动状态
 */
public enum GrouponSearchStatusEnum {

    All(0, "所有活动"),

    InProgress(1, "进行中"),

    NotStart(2, "未开始"),

    Finished(3, "已结束"),

    Exception(4, "异常");


    /**
     * 枚举值
     */
    private int code;

    /**
     * 枚举描述
     */
    private String message;


    GrouponSearchStatusEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 获取枚举值
     *
     * @return
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取枚举描述
     *
     * @return
     */
    public String getMessage() {
        return message;
    }


    /**
     * 通过代码获取枚举项
     *
     * @param code
     * @return
     */
    public static GrouponSearchStatusEnum getByCode(int code) {
        for (GrouponSearchStatusEnum apiStatusEnum : GrouponSearchStatusEnum.values()) {
            if (apiStatusEnum.getCode() == code) {
                return apiStatusEnum;
            }
        }
        return null;
    }

    /**
     * 通过名称获取枚举项
     *
     * @param name 枚举名称
     * @return
     */
    public static GrouponSearchStatusEnum getByName(String name) {
        for (GrouponSearchStatusEnum apiStatusEnum : GrouponSearchStatusEnum.values()) {
            if (apiStatusEnum.name().equalsIgnoreCase(name)) {
                return apiStatusEnum;
            }
        }
        return null;
    }

    /**
     * 通过枚举值或枚举名称获取枚举项
     *
     * @param value 枚举值或枚举名称
     * @return
     */
//    @JsonCreator
    public static GrouponSearchStatusEnum getValue(String value) {
        if (StringUtils.isNumeric(value))
            return getByCode(NumberUtils.toInt(value, 0));
        else
            return getByName(value);
    }
}